/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufg.inf.pos.bd;

import br.ufg.inf.pos.br.utils.RegraDaoException;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author luan
 */
public class ProdutoServiceImpl implements ProdutoService {

    ProdutoDao ProdutoDao;

    public ProdutoServiceImpl() {
        ProdutoDao = new ProdutoDaoImpl();
    }

    @Override
    public DefaultTableModel cadastrarProduto(Produto produto) throws RegraNegocioException {
        try {
            verificaIntegridade(produto);
            int codigoCadastrado = ProdutoDao.salvar(produto);
        } catch (RegraDaoException ex) {
            throw new RegraNegocioException(ex.getMessage());
        }
        return listarProdutosJtable();
    }

    @Override
    public DefaultTableModel listarProdutosJtable() throws RegraNegocioException, RegraDaoException{
        return ProdutoDao.listarCategoriaJtable();
    }

    private void verificaIntegridade(Produto produto) {
        if (produto.getNome().equalsIgnoreCase("") || produto.getNome() == null) {
            throw new RegraNegocioException("Favor inforar o NOME do produto");
        } else if (produto.getDescricao().equalsIgnoreCase("") || produto.getDescricao() == null) {
            throw new RegraNegocioException("Favor inforar a DESCRIÇÃO do produto");
        } else if (produto.getMarca().equalsIgnoreCase("") || produto.getMarca() == null) {
            throw new RegraNegocioException("Favor inforar a MARCA do produto");
        } else if (produto.getModelo().equalsIgnoreCase("") || produto.getModelo() == null) {
            throw new RegraNegocioException("Favor inforar o MODELO do produto");
        } else if (produto.getCategoria().getCategoria().equalsIgnoreCase("")
                || produto.getCategoria().getCategoria() == null) {
            throw new RegraNegocioException("Favor inforar a CATEGORIA do produto");
        }
    }

    @Override
    public List<Produto> listarProdutos() {
        try {
            return ProdutoDao.getAll();
        } catch (RegraDaoException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
            return null;
        }
    }
}
